package di

import (
	"fmt"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/aggregation"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/base/area"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/base/menu"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/base/msg"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/base/org"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/base/role"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/base/tenant"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/base/user"
	userService "git.mycaigou.com/gfyx/micro-gfyx-api/service/base/user"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/business_opportunity/bid"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/business_opportunity/contact"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/business_opportunity/customer"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/business_opportunity/market_insight"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/business_opportunity/order"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/business_opportunity/project"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/business_opportunity/strategic_monitor"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/business_opportunity/subscription"
	clueService "git.mycaigou.com/gfyx/micro-gfyx-api/service/clue"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/common"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/job_center"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/market/outbound_account"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/market/outbound_crowd"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/market/outbound_task"
	"git.mycaigou.com/gfyx/micro-gfyx-api/service/rpa"
)

func (c *Inject) InjectService() {
	services := []interface{}{
		area.NewAreaService,
		clueService.NewClueService,
		clueService.NewCustomerManageService,
		clueService.NewReportFollowService,
		clueService.NewReportService,
		common.NewCommonService,
		common.NewDmpReportService,
		common.NewFileService,
		common.NewFormService,
		common.NewMiniProgramService,
		common.NewOptionService,
		common.NewVerifyCodeService,
		common.NewCreateTenantService,
		common.NewSiteAnnouncementService,
		contact.NewContactService,
		customer.NewCustomerService,
		customer.NewCustomerGroupService,
		job_center.NewJobCenterService,
		menu.NewMenuService,
		order.NewOrderService,
		org.NewOrgService,
		msg.NewMsgService,
		outbound_account.NewOutboundAccountService,
		outbound_crowd.NewOutboundCrowdService,
		outbound_task.NewOutboundTaskService,
		project.NewProjectService,
		role.NewRoleService,
		rpa.NewByaiService,
		rpa.NewRccService,
		rpa.NewRpaCmdService,
		subscription.NewSubscriptionService,
		tenant.NewTenantService,
		user.NewUserNewService,
		userService.NewLoginService,
		userService.NewUserService,
		project.NewBuildingService,
		project.NewLandService,
		bid.NewBidService,
		aggregation.NewStatisticsService,
		clueService.NewCustomerMonitorService,
		strategic_monitor.NewStrategicMonitorService,
		market_insight.NewMarketInsightService,
	}
	var errs []error
	for _, service := range services {
		err := c.Provide(service)
		if err != nil {
			errs = append(errs, err)
		}
	}

	fmt.Printf("InjectService #%+v\n", errs)
}
